1. Field of the Invention
The present invention relates generally to an improved data processing system, and in particular, to a computer implemented method for integrated circuit design. Still more particularly, the present invention relates to a computer implemented method, system, and computer usable program code for buffer aware routing in integrated circuit (IC) design.
2. Description of the Related Art
Modern day electronics include components that use integrated circuits. Integrated circuits are electronic circuits formed using Silicon as a substrate and by adding impurities to form solid-state electronic devices, such as transistors, diodes, and resistors. Commonly known as a “chip”, an integrated circuit is generally encased in hard plastic. The components in modern day electronics generally appear to be rectangular black plastic pellets with connector pins protruding from the plastic encasement.
Circuit designers use a variety of software tools to design electronic circuits that accomplish an intended task. For example, a digital circuit may be designed to accept digital inputs, perform some computation, and produce a digital output. An analog circuit may be designed to accept analog signals, manipulate the analog signals, such as my amplifying, filtering, or mixing the signals, and produce an analog or digital output. Generally, any type of circuit can be designed as an IC.
The software tools used for designing ICs produce, manipulate, or otherwise work with the circuit layout at very small scales. Some of the components that such a tool may manipulate may only measure tens of nanometer across when formed in Silicon. The designs produced and manipulated using these software tools are complex, often including hundreds of thousands of such components interconnected to form an intended electronic circuitry.
The software tools manipulate these components at the components level, or blocks of components level. A block of components is also known as a cell. A cell in an IC design is a portion of the IC design. One way of identifying cells in an IC design is to overlay a grid of imaginary vertical and horizontal lines on the design, and deeming each portion of the IC design bound by horizontal and vertical lines as a cell. Cells formed in this manner are commonly known as global routing cells, or g-cells. Imposing such a grid on an IC design abstracts the global routing problem away from the actual wire implementation and gives a more mathematical representation of the task.
An IC design software tool can, among other functions, manipulate cells, or interconnect components of one cell with components of other cells. The interconnects between components are called wires. A wire is a connection between parts of electronic components, and is formed using a metallic material that conducts electricity.
Placement problem is the problem of placing the cells of a chip such that the design meets all the design parameters of the chip. Routing is the process of connecting the pins after placement. In other words, placement results in a rendering of the components of various cells as being located in certain positions in the design, whereas routing results in a rendering of how the metal layers would be populated with that placement.
A wire can be designed to take any one of the several available paths in a design. Placement of a wire on a certain path, or track, is a part of routing.
Router is a component of IC design tools that performs the routing function. Once the placement component—known as a placer—has performed the placement function, the router attempts to connect the wires without causing congestion. For example, if a design parameter calls for no more than five wires in a given area, the router attempts to honor that restriction in configuring the wiring. Such limitations on the wiring are a type of design constraints and are called congestion constraints. Other types of design constraints may include, for example, blocked areas—cell areas where wires may not be routed.
A global router divides the routing region into small tiles and attempts to route nets through the tiles such that no tile overflow its capacity. After global routing, wires must be assigned to actual tracks within each tile, followed by detail routing which must connect each global route to the actual pin shape on the cell. Another type of router—known as the detailed router—performs the detailed routing. The global and detailed routing produced during the design process is usually further modified during optimization of the design.